<?php

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- FIN NOTE DE LICENCE ---------------------------------------

class cpServiceUtilisateurs
{

	
	public static function getUtilisateurs()
	{
		
		global $core;
		
		$params = array();
		
		if(!empty($_POST['utilisateur_id'])) {
			$params['utilisateur_id'] = (integer) $_POST['utilisateur_id'];
		}
		if(!empty($_POST['groupe_id'])) {
			$params['groupe_id'] = (integer) $_POST['groupe_id'];
		}
		if(!empty($_POST['utilisateur_pseudo'])) {
			$params['utilisateur_pseudo'] = array('LIKE' => array('%'.$_POST['utilisateur_pseudo'].'%'));
		}
		
		$params['limit'] = 50;
		
		$utilisateurs = $core->site->getUtilisateurs($params, CP_GET_RS);
		$utilisateurs_xml = array();
		
		while($utilisateurs->fetch()) {
			$utilisateurs_xml[] = array(
				'utilisateur_id'		=> $utilisateurs->utilisateur_id,
				'utilisateur_pseudo'	=> $utilisateurs->utilisateur_pseudo,
				'utilisateur_prenom'	=> $utilisateurs->utilisateur_prenom,
				'utilisateur_nom'		=> $utilisateurs->utilisateur_nom,
				'utilisateur_email'		=> $utilisateurs->utilisateur_email
			);
		}
		
		return array(
			'erreur'		=> 0,
			'utilisateurs'	=> $utilisateurs_xml
		);
		
	}
	
	
	public static function supprimer()
	{
		
		global $core;
		
		# Permission nécessaire: utilisateurs
		$core->auth->verifierPermission('utilisateurs', true);
		
		# Vérification des données
		if(!is_array($_POST['utilisateurs']) || empty($_POST['utilisateurs'])) {
			throw new cpErreur(__('Aucune sélection'), 'utilisateurs', 302);
		}
		
		# Sélection des utilisateurs dans la base de données
		$utilisateurs = $core->site->getUtilisateurs(array(
			'utilisateur_id' => array('=' => $_POST['utilisateurs'])
		), CP_GET_STATIC);
		
		$utilisateurs_supprimes = array();
		$message = '';
		
		# Suppression des utilisateurs
		while($utilisateurs->fetch())
		{
			if( !$core->auth->estSuperadmin() && $utilisateurs->estSuperadmin() ) {
				$message.= '- '.sprintf(__('Vous ne pouvez pas supprimer %s car il est un superadmin.'), html::escapeHTML($utilisateurs->utilisateur_pseudo))."\n";
				continue;
			}
			elseif($core->auth->getUtilisateurID() == $utilisateurs->utilisateur_id) {
				$message.= '- '.__('Vous ne pouvez pas supprimer votre propre compte.')."\n";
				continue;
			}
			
			# Vérifier si l'utilisateur a créé des pages, médias, commentaires...
			$nbPages = $core->site->getPages(array(
				'utilisateur_id' 				=> $utilisateurs->utilisateur_id,
				'modification_utilisateur_id'	=> $utilisateurs->utilisateur_id,
				'operateur'					=> CP_OPERATEUR_OR
			), CP_GET_COMPTEUR)->f(0);
			$nbPagesTemp = $core->site->getPages(array(
				'utilisateur_id' 				=> $utilisateurs->utilisateur_id,
				'modification_utilisateur_id'	=> $utilisateurs->utilisateur_id,
				'operateur'						=> CP_OPERATEUR_OR
			), CP_GET_COMPTEUR, CP_TEMPORAIRE, 'temp_pages')->f(0);
			$nbMedias = $core->site->getMedias(array(
				'utilisateur_id' 		=> $utilisateurs->utilisateur_id
			), CP_GET_COMPTEUR)->f(0);
			$nbCommentaires = $core->site->getCommentaires(array(
				'utilisateur_id' 		=> $utilisateurs->utilisateur_id
			), CP_GET_COMPTEUR)->f(0);
			
			if(	$nbPages != 0 || $nbPagesTemp != 0) {
				$message.= '- '.sprintf(__('Des pages sont associées à %s.'), html::escapeHTML($utilisateurs->utilisateur_pseudo))."\n";
				continue;
			}
			if(	$nbMedias != 0) {
				$message.= '- '.sprintf(__('Des médias sont associés à %s.'), html::escapeHTML($utilisateurs->utilisateur_pseudo))."\n";
				continue;
			}
			if(	$nbCommentaires != 0) {
				$message.= '- '.sprintf(__('Des commentaires sont associés à %s.'), html::escapeHTML($utilisateurs->utilisateur_pseudo))."\n";
				continue;
			}
			
			$utilisateurs->supprimer();
			$utilisateurs_supprimes[] = (integer) $utilisateurs->utilisateur_id;
			
		}
		
		return array(
			'erreur' => 0,
			'utilisateurs_supprimes' => $utilisateurs_supprimes,
			'message' => $message
		);
		
	}
	
	
	public static function modifierStatut()
	{
		
		global $core;
		
		# Permission nécessaire: utilisateurs
		$core->auth->verifierPermission('utilisateurs', true);
		
		# Vérification des données
		if(!is_array($_POST['utilisateurs']) || empty($_POST['utilisateurs'])) {
			throw new cpErreur(__('Aucune sélection'), 'utilisateurs', 302);
		}
		$statut = $_POST['statut'] == 'activer' ? CP_UTILISATEUR_ACTIF : CP_UTILISATEUR_DESACTIVE;
		
		
		# Sélection des utilisateurs dans la base de données
		$utilisateurs = $core->site->getUtilisateurs(array(
			'utilisateur_id' => array('=' => $_POST['utilisateurs'])
		), CP_GET_STATIC);
		
		$utilisateurs_modifies = array();
		$message = '';
		
		$cur = $core->con->openCursor($core->prefix.'utilisateurs');
		$cur->utilisateur_statut = $statut;
		
		# Modifier le statut des utilisateurs
		while($utilisateurs->fetch())
		{
			if( !$core->auth->estSuperadmin() && $utilisateurs->estSuperadmin() ) {
				$message.= '- '.sprintf(__('Vous ne pouvez pas modifier %s car il est un superadmin.'), html::escapeHTML($utilisateurs->utilisateur_pseudo))."\n";
				continue;
			}
			elseif($core->auth->getUtilisateurID() == $utilisateurs->utilisateur_id) {
				$message.= '- '.__('Vous ne pouvez pas modifier le statut de votre propre compte.')."\n";
				continue;
			}

			$cles = $utilisateurs->utilisateur_cle;
			unset($cles['activation']);
			$cur->utilisateur_cle = serialize($cles);
			$utilisateurs->enregistrer($cur);
			
			$utilisateurs_modifies[] = (integer) $utilisateurs->utilisateur_id;
			
		}
		
		return array(
			'erreur' => 0,
			'utilisateurs_modifies' => $utilisateurs_modifies,
			'message' => $message
		);
		
	}
	
	
}

?>